import axios from 'axios';
import router from './../router/index';


//引入组建提示框 自定义加载框
import {
    Message,
    Loading
} from "element-ui";

import domMessage from '@/utils/messageOnce' //优化提示框反复问题
// new 对象实例
const messageOnce = new domMessage()
const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    // easy-mock服务挂了，暂时不使用了
    // baseURL: 'http://192.168.1.242:8080/',//王佳俊
    // baseURL: 'http://192.168.1.166:8080/', //钟旭
    // baseURL: 'http://192.168.1.142:8081/',测试
    timeout: 1000 * 60 * 1
    // timeout: 100 * 6 * 2
});
let loadinginstace //全局声明加载动画框，可以定义传入参数即可

// 添加请求拦截器
service.interceptors.request.use(

    config => {
        //自定义加载数据动画
        loadinginstace = Loading.service({
            fullscreen: true,
            text: '请稍等，数据加载中...',
            //  spinner:'el-icon-loading',
            //  background:'rgba(0, 0, 0, 0.7)'
        })
        //添加请求头
        const token = sessionStorage.getItem('token')
        config.headers.Authorization = token
        return config; //返回premiere
    },
    //请求失败
    error => {
        // console.log(error);
        return Promise.reject();
    }
);
// 添加响应拦截器
service.interceptors.response.use(
    //响应成功
    response => {
        //关闭加载
        //当相应状态200进行数据处理
        if (response.data.code === 200) {
            loadinginstace.close();
            messageOnce.success(response.data.msg);
            return response.data;
        } else if (response.data.code === 4205 || response.data.code === 4206) {
            router.push({
                path: '/login'
            });
            loadinginstace.close();
            messageOnce.error(response.data.msg)
            // window.location.reload(); //刷新页面清空vueX
            // 强制退出调用退出方法
            return response.data
        } else {
            loadinginstace.close();
            messageOnce.error(response.data.msg);
            return response.data
        }
    },
    //响应失败
    error => {
        //当服务器没有开启的时候，加载错误，给用户一个提示
        loadinginstace.close()
        messageOnce.error('响应失败');
        // console.log(error);
        return Promise.reject(error);
    }
);

export default service;